import access_routes from './routes/access-test';
import space from './routes/space';
import test from './routes/test';

export interface RouteObject {
  path: string;
  component?: string;
  hideInMenu?: boolean; // 是否在菜单中隐藏
  layout?: boolean; // 是否在layout中展示
  redirect?: string; // 重定向
  routes?: RouteObject[]; // 子路由
  name?: string; // 路由名称 ，默认作为页面的标题
  icon?: string; // 菜单图标
  access?: string; // 权限类型
  accessKey?: string; // 权限key
  hideBreadcrumb?: boolean; // 是否显示面包屑
  parentKeys?: string[];
  meta?: {
    // 路由元信息
    title?: string; // 自定义页面的标题 ,如果没有则使用name
    showBack?: boolean;
    keepAlive?: boolean;
  };
  [key: string]: any;
}

export interface MenuDataItem {
  /** @name 子菜单 */
  children?: MenuDataItem[];
  /** @name 在菜单中隐藏子节点 */
  hideChildrenInMenu?: boolean;
  /** @name 在菜单中隐藏自己和子节点 */
  hideInMenu?: boolean;
  /** @name 在面包屑中隐藏 */
  hideInBreadcrumb?: boolean;
  /** @name 菜单的icon */
  icon?: React.ReactNode;
  /** @name 自定义菜单的国际化 key */
  locale?: string | false;
  /** @name 菜单的名字 */
  name?: string;
  /** @name 用于标定选中的值，默认是 path */
  key?: string;
  /** @name disable 菜单选项 */
  disabled?: boolean;
  /** @name 路径,可以设定为网页链接 */
  path?: string;
  /**
   * @deprecated 当此节点被选中的时候也会选中 parentKeys 的节点
   * @name 自定义父节点
   */
  parentKeys?: string[];
  /** @name 隐藏自己，并且将子节点提升到与自己平级 */
  flatMenu?: boolean;
  /** @name 指定外链打开形式，同a标签 */
  target?: string;

  [key: string]: any;
}

const routes: RouteObject[] = [...access_routes, ...space, ...test];

const backRoutes: RouteObject[] = [
  {
    path: '/login',
    component: '@/pages/User/Login',
    hideInMenu: true,
    layout: false,
  },
  {
    path: '/',
    redirect: '/home',
    // component: "@/layouts/index",
  },
  {
    name: '工作台',
    path: '/home',
    icon: 'icon-a-Property1shiwuguanli',
    component: '@/pages/Home',
    hideBreadcrumb: true,
  },
  ...routes,
  {
    path: '/*',
    component: '404',
    layout: false,
  },
];

export default backRoutes;
